/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pe.gob.pnp.despachadores;
import java.sql.*;
import java.util.*;
import java.util.ArrayList;
import pe.gob.pnp.actions.TipoDato;
import pe.gob.pnp.factories.*;
import oracle.jdbc.*;
/**
 *
 * @author Jesus
 */
public class TipoDatoDespachador {

    public static List<TipoDato> obtenerTipoDato()throws SQLException
    {
        List<TipoDato> lstTipoDato = new ArrayList<TipoDato>();
        Connection conn = null;
        try {
            conn = ConnectionPool.obtenerConexion();
            String sql = "{call SP_OBTENER_TIPO_DATO(?)}";
            CallableStatement cs = conn.prepareCall(sql);
            cs.registerOutParameter(1, OracleTypes.CURSOR);
            cs.execute();
            ResultSet rs = (ResultSet) cs.getObject(1);
            while (rs.next())
            {
                TipoDato tipoDato = new TipoDato();

                tipoDato.setNtidaIdentificador(rs.getInt("NTIDA_IDENTIFICADOR"));
                tipoDato.setCtidaDescripcion(rs.getString("CTIDA_DESCRIPCION"));
                tipoDato.setDtidaFechaCreacion(rs.getDate("DTIDA_FECHACREACION"));
                tipoDato.setBtidaActivo(rs.getInt("BTIDA_ACTIVO"));
                tipoDato.setCtidaFuncionValidador(rs.getString("CTIDA_FUNCIONVALIDADOR"));

                lstTipoDato.add(tipoDato);

            }
        }finally{
          ConnectionPool.liberarConexion(conn);
        }
        return lstTipoDato;
    }

    public static void agregarTipoDato(TipoDato tipoDato)throws SQLException
    {
        Connection conn = null;
        try {
            conn = ConnectionPool.obtenerConexion();
            String sql = "{call SP_AGREGAR_TIPO_DATO(?,?)}";
            CallableStatement cs = conn.prepareCall(sql);
            cs.setString(1, tipoDato.getCtidaDescripcion());
            cs.setString(2, tipoDato.getCtidaFuncionValidador());
            cs.execute();
        } finally {
            ConnectionPool.liberarConexion(conn);
        }
    }

    public static void modificarTipoDato(TipoDato tipoDato)throws SQLException
    {
        Connection conn = null;
        try{
            conn = ConnectionPool.obtenerConexion();
            String sql = "{call SP_MODIFICAR_TIPO_DATO(?,?,?)}";
            CallableStatement cs = conn.prepareCall(sql);
            cs.setString(1, tipoDato.getCtidaDescripcion());
            cs.setString(2, tipoDato.getCtidaFuncionValidador());
            cs.setInt(3, tipoDato.getNtidaIdentificador());
            cs.execute();
        }finally {
            ConnectionPool.liberarConexion(conn);
        }
    }

    public static void eliminarTipoDato(int idaIdentificador)throws SQLException
    {
        Connection conn = null;
        try{
            conn = ConnectionPool.obtenerConexion();
            String sql = "{call SP_ELIMINAR_TIPO_DATO(?)}";
            CallableStatement cs = conn.prepareCall(sql);
            cs.setInt(1, idaIdentificador);
            cs.execute();
        }finally{
            ConnectionPool.liberarConexion(conn);
        }
    }

}
